/**
 * Created by Administrator on 2017/12/5.
 */

public class 笔记 {

    /**
     * 使用android studio开发 3.0会一键配置
     * 配置主题 NoActionBar
     */
/**
 *在当前模块下面配置一个anko库 这会让我们开发kotlin会更加简单
 * 在github搜索anko
 * 可以直接导入 也可以分步导入
 * 版本号在哪找: 在jcenter的仓库
 * https://bintray.com/bintray/jcenter
 */
/**
 * mvp架构
 * 首先是创建的包 model presenter view
 * view里面主要是view的接口或实现
 * 定义一个ui包 主要放的是activity和fragment
 * Utils
 * weight
 */
/**
 * 基类的抽取
 * 1.activity的抽取
 *  BaseActivity 所有Activity的基类
 *  覆写onCreate方法
 *  1.在setContentView的参数中传入一个抽象的方法
 *  子类去实现传入布局id getLayoutId()
 *  2.initListener  不必强制子类实现
 *  3.initData 不需要强制实现
 *  4.处理toast  在anko库中已经封装过了
 *     主要是处理线程问题  runOnUiThread{toast() }
 *  5.处理log的打印 继承AnkoLogger 实现log的打印
 *
 *
 *  2.BaseFragment的抽取
 *   1.onCreate  初始化 子类可能实现 定义一个init  不需要强制实现
 *   2.onCreateView 显示一个布局 return initView() 强制实现
 *   3.onActivityCreated 定义数据的加载和监听 initListener 和initData  不需要强制
 *   4. 一样的处理toast log的方法
 *
 */
/**
 * 欢迎界面  splash
 * 继承baseActivity
 * 返回布局id
 * 指定theme 为全屏
 * 这个界面默认有一个动画
 * 可以在布局中先指定放大1.5倍
 * 缩小动画的处理  覆写方法 initData方法 注意我们需要的覆写的方法需要定义open属性
 * 属性动画 animate
 * ViewCompat.animate(控件id).scaleX(1.0f).scaleY(1.0f).setDuration(2000)
 * 动画的监听
 * setListener
 * 动画结束进入主界面 startActivity () anko库里面处理了
 * startActivity<要进入的界面>(这里面可以传递值)
 */

/**
 * base里面定义一个方法 开启一个Activity并且关闭当前界面
 * 参考anko的startActivity方法 内联关键字 inline
 * reified 关键字的作用: 找到泛型的具体化类型 需要内联关键字的支持
 */
/**
 * 主界面布局
 * 1.toolbar 内容布局frameLayout 导航菜单 (抽取toolbar)
 * 2.bottomBar  用法参考github
 */
/**
 * toolbar的处理
 */

/**
 * bottomBar 的处理
 * setOnTabSelectListener 里面的方法是接受的tab的id  使用it可以直接获取到
 * 里面只有一个方法 可以直接{ }
 * 使用when 来判断
 * 根据id获取fragment 可以创建一个工具类 传入id 返回一个fragment
 * 单例的模式创建
 * 1.构造方法私有化
 * 2.静态的方法 (伴生对象 companion object) 惰性加载 var fragmentUtils by lazy{ FragmentUtils() }
 * 3.创建一个方法
 * fun getFragment(tabId: Int): BaseFragment? {
 * when (tabId) {
 * R.id.tab_home -> return HomeFragment}}
 * 根据id获取对应的fragment 这些对象都是惰性加载的
 * val MVFragment by lazy { MVFragment() }
 *
 * 获取到之后根据fragmentManager
 *
 */
/**
 * home界面适配
 */

public  void home首界面适配(){
    /***
     * 创建HomeFragment的布局
     * 里面就先放一个RecyclerView
     * 自定义条目布局 : 相对布局
     * 初始化的时候会调用init方法
     *
     */
//主构造和次构造的区别
//    初始化的时候调用init方法,但是这个方法中只能是访问主构造方法中传递过来的参数,不能访问次构造方法中参数
//            如何访问,先保存下次构造方法中的参数,this.b=b 这样就可以访问了 和java中一样的
//

}

/****
 *这句可以说是今天学到的最重要的东西
 *                gson.fromJson<List<HomeItemBean>>(response?.body()?.string(),object : TypeToken<List<HomeItemBean>>(){}.type)
 * 解析数据
 * 条目的更新处理
 * 直接在view中处理 set数据然后具体的交给view处理
 * 在适配器中添加更新数据和添加数据的方法
 */
/**
 * 首界面的下拉刷新处理是用的Google的官方的swipeRelfelayout
 * 上拉加载 这里是根据条目的不停显示不同的view 在我们请求的数据 最后一条添加一个底部的view
 * 然后根据position来判断显示
 * 根据recycle人View滑动来控制显示
 */
/**
 * 首页mvp重构
 *
 */
/**
 * 网络框架的封装
 * 参数中传递的泛型类型是可以获取到实际 的类型的type的
 */


}
